package com.xuecheng.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
import org.springframework.security.config.web.server.ServerHttpSecurity;
import org.springframework.security.web.server.SecurityWebFilterChain;

/**
 * @author Mr.M
 * @version 1.0
 * @description 安全配置类
 * @date 2022/9/27 12:07
 */
@EnableWebFluxSecurity  // 开启WebFlux环境下的Spring Security支持
@Configuration           // 标识为配置类，让Spring容器扫描并加载
public class SecurityConfig {

    //安全拦截配置
    @Bean
    public SecurityWebFilterChain webFluxSecurityFilterChain(ServerHttpSecurity http) {

        return http.authorizeExchange()  //开启请求授权配置，用于定义不同路径的访问权限规则。
                .pathMatchers("/**") //匹配所有请求路径
                .permitAll() //允许所有用户（包括未登录用户）访问匹配的路径，无需认证。
                .anyExchange() //匹配所有未被前面的pathMatchers匹配到的请求
                .authenticated() //要求访问这些请求的用户必须已认证（登录）。
                .and()   //用于连接不同的配置模块
                .csrf().disable()  //禁用 CSRF（Cross-Site Request Forgery，跨站请求伪造）防护。
                .build();
    }
}
